# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.CloudAsset.V1.Model.EffectiveTagDetails do
  @moduledoc """
  The effective tags and the ancestor resources from which they were inherited.

  ## Attributes

  *   `attachedResource` (*type:* `String.t`, *default:* `nil`) - The [full resource name](https://cloud.google.com/asset-inventory/docs/resource-name-format) of the ancestor from which effective_tags are inherited, according to [tag inheritance](https://cloud.google.com/resource-manager/docs/tags/tags-overview#inheritance).
  *   `effectiveTags` (*type:* `list(GoogleApi.CloudAsset.V1.Model.Tag.t)`, *default:* `nil`) - The effective tags inherited from the attached_resource. Note that tags with the same key but different values may attach to resources at a different hierarchy levels. The lower hierarchy tag value will overwrite the higher hierarchy tag value of the same tag key. In this case, the tag value at the higher hierarchy level will be removed. For more information, see [tag inheritance](https://cloud.google.com/resource-manager/docs/tags/tags-overview#inheritance).
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :attachedResource => String.t() | nil,
          :effectiveTags => list(GoogleApi.CloudAsset.V1.Model.Tag.t()) | nil
        }

  field(:attachedResource)
  field(:effectiveTags, as: GoogleApi.CloudAsset.V1.Model.Tag, type: :list)
end

defimpl Poison.Decoder, for: GoogleApi.CloudAsset.V1.Model.EffectiveTagDetails do
  def decode(value, options) do
    GoogleApi.CloudAsset.V1.Model.EffectiveTagDetails.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.CloudAsset.V1.Model.EffectiveTagDetails do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
